جزوه · فصل پنجم · جلسه ۵۸ · شروع راه‌اندازی KVM ← بازگشت به فهرست
📘 فصل پنجم · جلسه ۵۸ شروع راه‌اندازی KVM
📅 تاریخ: چهارشنبه، ۲۸ مرداد ۱۴۰۵ 👤 مدرس: محمد عابدینی 🐚 Zsh · 🐧 Debian · 📦 AlmaLinux
KVM یکی از مهم‌ترین مباحث مجازی‌سازی در لینوکس است. نصب و راه‌اندازی آن در آزمون‌های عملی بسیار پرتکرار است.
🖥️ قبل از شروع، یه مثال ساده:

فرض کن می‌خوای روی یه کامپیوتر، چند تا سیستم‌عامل مجزا اجرا کنی. می‌تونی از VirtualBox استفاده کنی (نوع ۲)، ولی اگه سرور داری و می‌خوای بهترین عملکرد رو داشته باشی، باید از KVM (نوع ۱) استفاده کنی. KVM مثل یه راننده حرفه‌ای است که مستقیماً با سخت‌افزار کار می‌کند و ماشین‌های مجازی رو با سرعت بالا اجرا می‌کند.

▍ KVM چیست؟

KVM (مخفف Kernel-based Virtual Machine) یک راه‌حل مجازی‌سازی کامل (Full Virtualization) برای لینوکس روی پردازنده‌های x86 است که از افزونه‌های مجازی‌سازی سخت‌افزاری (Intel VT یا AMD-V) پشتیبانی می‌کند. KVM شامل دو بخش اصلی است:

با استفاده از KVM، می‌توانید چندین ماشین مجازی با سیستم‌عامل‌های لینوکس یا ویندوز (بدون نیاز به تغییر) اجرا کنید. هر ماشین مجازی دارای سخت‌افزار مجازی اختصاصی خود است: کارت شبکه، دیسک، کارت گرافیک و ...

🔑 ویژگی‌های کلیدی KVM:
  • متن‌باز و رایگان
  • بخشی از هسته لینوکس (از نسخه ۲.۶.۲۰ به بعد)
  • QEMU برای شبیه‌سازی سخت‌افزار در فضای کاربری (از نسخه ۱.۳ به بعد)
  • پشتیبانی از انواع سیستم‌عامل‌های مهمان (Linux, Windows, BSD, ...)
  • عملکرد نزدیک به سخت‌افزار واقعی (Type 1 Hypervisor)
KVM یک Hypervisor Type 1 (Bare-Metal) است که مستقیماً روی سخت‌افزار اجرا می‌شود و بخشی از هسته لینوکس است.

▍ بررسی پشتیبانی سخت‌افزاری

قبل از نصب KVM، باید مطمئن شوید که پردازنده شما از مجازی‌سازی سخت‌افزاری پشتیبانی می‌کند.

┌──(ya3in㉿kali)-[~] └─$ grep -E "vmx|svm" /proc/cpuinfo

توضیح: اگر خروجی شامل vmx باشد، پردازنده اینتل و اگر شامل svm باشد، پردازنده AMD است و از مجازی‌سازی پشتیبانی می‌کند.

vmx = Intel VT-x   |   svm = AMD-V

▍ نصب KVM روی Debian

• مرحله ۱: نصب بسته‌های مورد نیاز

┌──(ya3in㉿kali)-[~] └─$ sudo apt update └─$ sudo apt install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virt-manager

توضیح بسته‌ها:

• مرحله ۲: راه‌اندازی سرویس libvirtd

┌──(ya3in㉿kali)-[~] └─$ sudo systemctl enable --now libvirtd

توضیح: libvirtd سرویس اصلی مدیریت ماشین‌های مجازی است که باید فعال و راه‌اندازی شود.

• مرحله ۳: افزودن کاربر به گروه libvirt

برای استفاده از virt-manager و virsh بدون نیاز به sudo، کاربر خود را به گروه libvirt اضافه کنید:

┌──(ya3in㉿kali)-[~] └─$ sudo usermod -aG libvirt $USER

توضیح: پس از اجرا، باید از سیستم خارج و دوباره وارد شوید تا تغییرات اعمال شوند.

برای استفاده از virt-manager در دبیان، کاربر باید عضو گروه libvirt باشد.

▍ نصب KVM روی AlmaLinux

• مرحله ۱: بررسی پشتیبانی سخت‌افزاری

┌──(user㉿almalinux)-[~] └─$ grep -E "vmx|svm" /proc/cpuinfo

• مرحله ۲: نصب بسته‌ها

┌──(user㉿almalinux)-[~] └─$ sudo dnf install qemu-kvm libvirt virt-install virt-manager virt-viewer bridge-utils

توضیح: بسته‌ها مشابه دبیان هستند اما با نام‌های اندکی متفاوت. در الما، virt-install نیز نصب می‌شود که ابزار خط فرمان برای ایجاد ماشین مجازی است.

در الما، بسته virt-install به صورت جداگانه نصب می‌شود.

• مرحله ۳: راه‌اندازی سرویس libvirtd

┌──(user㉿almalinux)-[~] └─$ sudo systemctl enable --now libvirtd

• مرحله ۴: افزودن کاربر به گروه libvirt

┌──(user㉿almalinux)-[~] └─$ sudo usermod -aG libvirt $USER

▍ ابزارهای مدیریتی KVM

virt-manager (رابط گرافیکی)

یک ابزار گرافیکی (GUI) برای مدیریت ماشین‌های مجازی. با اجرای virt-manager می‌توانید ماشین‌های مجازی را بسازید، شروع، متوقف، حذف و تنظیمات آنها را تغییر دهید.

┌──(ya3in㉿kali)-[~] └─$ virt-manager

virsh (ابزار خط فرمان)

ابزار خط فرمان قدرتمند برای مدیریت ماشین‌های مجازی. با virsh می‌توانید تمام کارهای virt-manager را از طریق ترمینال انجام دهید.

┌──(ya3in㉿kali)-[~] └─$ virsh list --all Id Name State ----------------------- - test shut off

توضیح: virsh list --all همه ماشین‌های مجازی (فعال و غیرفعال) را نمایش می‌دهد.

virsh ابزار اصلی مدیریت ماشین‌های مجازی در خط فرمان است.

virt-install (ایجاد ماشین مجازی از خط فرمان)

با این ابزار می‌توانید یک ماشین مجازی جدید را به‌طور کامل از خط فرمان ایجاد کنید.

┌──(ya3in㉿kali)-[~] └─$ virt-install --name test --memory 2048 --vcpus 2 --disk size=10 --cdrom /path/to/iso --os-type linux

توضیح: این دستور یک ماشین مجازی با نام test، ۲ گیگابایت RAM، ۲ هسته CPU، دیسک ۱۰ گیگابایتی و یک ISO مشخص می‌سازد.

virt-install برای ایجاد ماشین‌های مجازی از خط فرمان استفاده می‌شود و در الما به صورت جداگانه نصب می‌شود.

▍ دستورات پرکاربرد virsh

دستور توضیح
virsh list --all لیست همه ماشین‌های مجازی
virsh start vm-name شروع یک ماشین مجازی
virsh shutdown vm-name خاموش کردن ماشین مجازی
virsh destroy vm-name خاموش کردن اجباری (قطع برق)
virsh undefine vm-name حذف ماشین مجازی (پاک کردن تعریف)
virsh console vm-name اتصال به کنسول ماشین مجازی
virsh dominfo vm-name نمایش اطلاعات ماشین مجازی
virsh destroy معادل قطع برق (خاموشی اجباری) و virsh shutdown معادل خاموشی نرمال است.

▍ تأیید نصب KVM

برای اطمینان از اینکه KVM به درستی کار می‌کند، می‌توانید از دستورات زیر استفاده کنید:

┌──(ya3in㉿kali)-[~] └─$ lsmod | grep kvm kvm_intel 28672 0 kvm 77824 1 kvm_intel

توضیح: اگر ماژول‌های kvm و kvm_intel (یا kvm_amd) را مشاهده کردید، KVM به درستی بارگذاری شده است.

┌──(ya3in㉿kali)-[~] └─$ sudo virt-host-validate QEMU: Checking for hardware virtualization : PASS QEMU: Checking for device /dev/kvm : PASS QEMU: Checking for device /dev/vhost-net : PASS ...

توضیح: این دستور همه پیش‌نیازهای میزبانی ماشین‌های مجازی را بررسی می‌کند.

✅ جمع‌بندی نهایی برای امتحان:
  • KVM یک Hypervisor Type 1 در هسته لینوکس است.
  • پشتیبانی سخت‌افزاری: vmx (Intel) و svm (AMD).
  • بسته‌های اصلی (Debian): qemu-kvm libvirt-daemon-system libvirt-clients virt-manager
  • بسته‌های اصلی (AlmaLinux): qemu-kvm libvirt virt-install virt-manager
  • سرویس اصلی: libvirtd
  • گروه کاربری: برای استفاده بدون sudo، عضو گروه libvirt شوید.
  • ابزارهای مدیریتی: virt-manager (GUI)، virsh (CLI)، virt-install (ایجاد).
  • دستور تأیید: lsmod | grep kvm و virt-host-validate.